#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;

//template
//int add1(int a,int b)
//{
//	return a + b;
//}

//template<T1, T2>
//int add2(int a, int b)
//{
//	return a + b;
//}

//template<class T1, T2>
//int add3(int a, int b)
//{
//	return a + b;
//}

template<class T1, class T2>
int add4(int a, int b)
{
	return a + b;
}

//template<typename T1, T2>
//int add5(int a, int b)
//{
//	return a + b;
//}

template<typename T1, typename T2>
int add6(int a, int b)
{
	return a + b;
}

template<class T1, typename T2>
int add7(int a, int b)
{
	return a + b;
}

//< typename T1, class T2 >
//int add8(int a, int b)
//{
//	return a + b;
//}

int        globalVar       = 1;
static int staticGlobalVar = 1;
int main()
{
	static int staticVar = 1;
	int   localVar = 1;
	int   a1[10] = { 1, 2, 3, 4 };

	char  a2[]      = "abcd";
	const char* ptr = "abcd";

	int*  ptr1 = (int*)malloc(sizeof(int) * 4);
	int*  ptr2 = (int*)calloc(4, sizeof(int));
	int*  ptr3 = (int*)realloc(ptr2, sizeof(int) * 4);

	free(ptr1);
	free(ptr3);
	return 0;
}
